package com.lhh.myspringboot.java8;

public class LambdaTest2 {

    public static void main(String[] args) {

        // 1,参数类型可以省略
        // 2,假如只有一个参数，()括号可以省略
        // 3,如果方法体只有一条语句，{}大括号可以省略
        // 4,如果方法体中唯一的语句是return返回语句，那省略大括号的同事return也要省略

        // 无参数无返回值
        If1 if1=()->System.out.println("无参数无返回值");
        if1.test();

        // 单个参数无返回值
        If2 if2=a->System.out.println("单个参数无返回值 a="+a);
        if2.test(3);

        // 两个参数无返回值
        If3 if3=(a,b)->{
            System.out.println("两个参数无返回值 a+b="+(a+b));
        };
        if3.test(2,3);

        // 无参数有返回值
        If4 if4=()->100;
        System.out.println(if4.test());


        // 单个参数有返回值
        If5 if5=a->{
            System.out.print("单个参数有返回值 ");
            return a;
        };
        System.out.println(if5.test(200));

        // 多个参数有返回值 参数类型可以省略
        If6 if6=(a,b)->a+b;
        System.out.println(if6.test(1,2));

    }


    interface If1{

        /**
         * 无参数无返回值
         */
        void test();
    }


    interface If2{

        /**
         * 单个参数无返回值
         * @param a
         */
        void test(int a);
    }

    interface If3{

        /**
         * 两个参数无返回值
         * @param a
         * @param b
         */
        void test(int a,int b);
    }


    interface If4{

        /**
         * 无参数有返回值
         * @return
         */
        int test();
    }

    interface If5{

        /**
         * 单个参数有返回值
         * @param a
         * @return
         */
        int test(int a);
    }

    interface If6{

        /**
         * 多个参数有返回值
         * @param a
         * @param b
         * @return
         */
        int test(int a,int b);
    }
}
